from alg import Solution

solver = Solution()

# Test cases: (n, k, expected_combinations)
test_cases = [
    (4, 2, [[1, 2], [1, 3], [1, 4], [2, 3], [2, 4], [3, 4]]),
    (1, 1, [[1]]),
    (3, 1, [[1], [2], [3]]),
    (3, 2, [[1, 2], [1, 3], [2, 3]]),
    (5, 3,
     [[1, 2, 3], [1, 2, 4], [1, 2, 5], [1, 3, 4], [1, 3, 5], [1, 4, 5], [2, 3, 4], [2, 3, 5], [2, 4, 5], [3, 4, 5]])
]

all_passed = True

for i, (n_val, k_val, expected) in enumerate(test_cases):
    actual = solver.combine(n_val, k_val)

    # Sort both lists of combinations for reliable comparison, as order of combinations doesn't matter
    actual.sort()
    expected.sort()

    print(f"Test Case {i + 1}: n={n_val}, k={k_val}")
    print(f"  Expected: {expected}")
    print(f"  Actual:   {actual}")

    if actual == expected:
        print("   PASSED ")
    else:
        print("   FAILED ")
        all_passed = False
    print("-" * 20)

